# 列表 -- list
#     有序;可变;支持索引（即可支持切片步长）
# 列表:存储数据,支持多种类型,字符串、数字、布尔、列表、集合、元组、字典
#
# 定义列表
# lst = ['alex', 2, True, '汉字']
# print(id(lst[0]))
# 在列表lst的内存单元中不是存储元素的具体内容,而是存储内容对应内存单元的地址
# 因此列表是可变的，当改变内容时，直接把改内容的地址粘贴到列表中即可；而字符串就是不可变数据
# 不可能在原来字符串上进行改变

# 增
# lst = ['alex', 2, True, '汉字']
# lst.append('asd') #追加（在列表最后添加）
# print(lst)
#
# lst.insert(2,'你好') #尽量不去使用，数据量越大，效率越低
# print(lst)
# lst = ['alex', 2, True, '汉字']
# lst.extend('123') # 迭代添加
# print(lst)

# 删
# lst = ['alex', 2, True, '汉字']
# lst.pop()   #弹 默认删除最后一个
# lst.pop(2)  #通过索引删除
# print(lst)

# lst = ['alex', 2, True, '汉字']
# lst.remove(2)   #通过元素名进行删除，若有多个同名，只删最左边的
# print(lst)


# lst = ['alex', 2, True, '汉字']
# del lst #删除整个lst列表
# del lst[0::2]   #可通过切片删除
# print(lst)
# lst = ['alex', 2, True, '汉字']
# lst.clear() #清空列表内容
# print(lst)

# 改
# lst = ['alex', 2, True, '汉字']
# lst[2] = False #通过索引改
# print(lst)
# 迭代修改
# lst = ['alex', 2, True, '汉字']
# lst[1:2] = "123" #切片修改，字符串（单个元素）的添加是一个迭代的过程
# # lst[1:2] = 1, "22" #添加元组
# lst[1:4] = '1'
# lst[1:4:2] = 1, 2 # 若步长不为一，这添加的内容要一一对应
# print(lst)

# 查
# lst = ['alex', 2, True, '汉字']
# for i in lst:
#     print(i)


# 列表嵌套
# 无论哪种数据类型切片后的类型还是源数据类型
# lst = [12, 'l', [22, 'o', ['pot', ['wo'], 1]]]
# a = lst[-1][-1][-2]     # 列表
# a = lst[-1][-1][-2][0]  # 内容
# print(a)

# 面试题
# lst = [1,2]
# lst[0] = lst
# print(lst) # 结果 [[...],2]

# lst = ['liu', 'zhang', 'wang']
# enm = ''
# for i in lst:
#     enm = enm + i + '_'     # 字符串拼接
# print(enm[:-1])             # 切片的顾头不顾尾
# print('_'.join(lst))          # 拼接符号.join(可迭代对象)

# lst = ['abcd ', ' ppd ', 'cdc', 'ajkc ', 'Ajatc']
# lst1 = []
# for i in lst:
#     enm = i.strip()
#     if (enm.startswith('a') or enm.startswith('A')) and enm.endswith('c'):
#         lst1.append(enm)
# print(lst1)

# 敏感词
# lit = ['大麻', '冰毒', '海洛因']
# p = '我是大麻,冰毒让我过来问问,这有海洛因和大麻吗'
# for i in lit:
#     if i in p:
#         p = p.replace(i, len(i)*'*',)
# print(p)

# 嵌套查询
# lit = [1, 2, 'ASASA', [2, 3, 'llP']]
# for i in lit:
#     if type(i) == list:
#         for j in i:
#             if type(j) == str:
#                 print(j.lower())
#             else:print(j)
#     elif type(i) == str:
#         print(i.lower())
#     else:
#         print(i)

# 斐波那契数列
# lit = [1, 1]
# count = 100
# while (lit[-1]+lit[-2])<count:
#     lit.append(lit[-1]+lit[-2])
# print(lit)